#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   encryption.py
@Time    :   2024-08-05 18:53:50
@Author  :   chakcy 
@Email   :   947105045@qq.com
@description   :   加密解密工具 
'''

import hashlib
import os
import base64

def hash_password(password: str) -> str:
    """
    加密密码
    
    参数：
    - password: 密码字符串 str

    返回：
    - 加密后的密码字符串 str
    """
    salt = os.urandom(32)
    key = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
    hashed_password = salt + key
    return base64.b64encode(hashed_password).decode('utf-8')

def verify_password(plain_password: str, hashed_password: str) -> bool:
    """
    验证密码
    
    参数：
    - plain_password: 明文密码字符串 str
    - hashed_password: 加密后的密码字符串 str

    返回：
    - 验证结果 bool
    """
    hashed_password_bytes = base64.b64decode(hashed_password.encode('utf-8'))
    salt = hashed_password_bytes[:32]
    key = hashed_password_bytes[32:]
    new_key = hashlib.pbkdf2_hmac('sha256', plain_password.encode('utf-8'), salt, 100000)
    return new_key == key
